import { createApp } from 'vue'
import { createPinia } from 'pinia'
import piniaPersist from 'pinia-plugin-persistedstate' // 持久化插件
import { useAuthStore } from './stores/auth/userAuthStore'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import zhCn from 'element-plus/es/locale/lang/zh-cn'// 引入中文语言包
import * as ElIcon from '@element-plus/icons-vue'

import * as echarts from 'echarts' //引入echarts


import App from './App.vue'
// 导入路由规则
import router from './router'



// 创建vue项目的应用实例对象，将App.vue组件作为根组件
const app = createApp(App)

app.config.globalProperties.$echarts = echarts
app.use(ElementPlus, { locale: zhCn }) // 使用中文语言包
const pinia = createPinia()
pinia.use(piniaPersist)
app.use(pinia)
//将vueRouter实例挂载到vue应用上，以便处理路由相关的请求。
app.use(router)



Object.keys(ElIcon).forEach((key) => {
  app.component(key, ElIcon[key])
})
app.use(ElementPlus);



//应用实例必须在调用了.mount（）方法后才会渲染出来。该方法接收一个“容器”参数，可以是一个实际的DoM元素或是一个CSS选择器字符串
app.mount('#app')

// 在应用初始化完成后恢复登录状态
const userStore = useAuthStore()
userStore.restoreAuthFromLocalStorage()
